/**
 */
package fUML.Syntax.Activities.IntermediateActivities;

import fUML.Syntax.CommonBehaviors.BasicBehaviors.Behavior;

import java.util.Map;

import org.eclipse.emf.common.util.DiagnosticChain;
import org.eclipse.emf.common.util.EList;

/**
 * <!-- begin-user-doc -->
 * A representation of the model object '<em><b>Activity</b></em>'.
 * <!-- end-user-doc -->
 *
 * <p>
 * The following features are supported:
 * <ul>
 *   <li>{@link fUML.Syntax.Activities.IntermediateActivities.Activity#getNode <em>Node</em>}</li>
 *   <li>{@link fUML.Syntax.Activities.IntermediateActivities.Activity#isIsReadOnly <em>Is Read Only</em>}</li>
 *   <li>{@link fUML.Syntax.Activities.IntermediateActivities.Activity#getEdge <em>Edge</em>}</li>
 * </ul>
 * </p>
 *
 * @see fUML.Syntax.Activities.IntermediateActivities.IntermediateActivitiesPackage#getActivity()
 * @model
 * @generated
 */
public interface Activity extends Behavior {
	/**
	 * Returns the value of the '<em><b>Node</b></em>' containment reference list.
	 * The list contents are of type {@link fUML.Syntax.Activities.IntermediateActivities.ActivityNode}.
	 * It is bidirectional and its opposite is '{@link fUML.Syntax.Activities.IntermediateActivities.ActivityNode#getActivity <em>Activity</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * <!-- begin-model-doc -->
	 * Nodes coordinated by the activity.
	 * <!-- end-model-doc -->
	 * @return the value of the '<em>Node</em>' containment reference list.
	 * @see fUML.Syntax.Activities.IntermediateActivities.IntermediateActivitiesPackage#getActivity_Node()
	 * @see fUML.Syntax.Activities.IntermediateActivities.ActivityNode#getActivity
	 * @model opposite="activity" containment="true" ordered="false"
	 * @generated
	 */
	EList<ActivityNode> getNode();

	/**
	 * Returns the value of the '<em><b>Is Read Only</b></em>' attribute.
	 * The default value is <code>"false"</code>.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * <!-- begin-model-doc -->
	 * If true, this activity must not make any changes to variables outside the
	 *                   activity or to objects. (This is an assertion, not an executable property. It may
	 *                   be used by an execution engine to optimize model execution. If the assertion is
	 *                   violated by the action, then the model is ill-formed.) The default is false (an
	 *                   activity may make nonlocal changes).
	 * <!-- end-model-doc -->
	 * @return the value of the '<em>Is Read Only</em>' attribute.
	 * @see #setIsReadOnly(boolean)
	 * @see fUML.Syntax.Activities.IntermediateActivities.IntermediateActivitiesPackage#getActivity_IsReadOnly()
	 * @model default="false" required="true" ordered="false"
	 * @generated
	 */
	boolean isIsReadOnly();

	/**
	 * Sets the value of the '{@link fUML.Syntax.Activities.IntermediateActivities.Activity#isIsReadOnly <em>Is Read Only</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Is Read Only</em>' attribute.
	 * @see #isIsReadOnly()
	 * @generated
	 */
	void setIsReadOnly(boolean value);

	/**
	 * Returns the value of the '<em><b>Edge</b></em>' containment reference list.
	 * The list contents are of type {@link fUML.Syntax.Activities.IntermediateActivities.ActivityEdge}.
	 * It is bidirectional and its opposite is '{@link fUML.Syntax.Activities.IntermediateActivities.ActivityEdge#getActivity <em>Activity</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * <!-- begin-model-doc -->
	 * Edges expressing flow between nodes of the activity.
	 * <!-- end-model-doc -->
	 * @return the value of the '<em>Edge</em>' containment reference list.
	 * @see fUML.Syntax.Activities.IntermediateActivities.IntermediateActivitiesPackage#getActivity_Edge()
	 * @see fUML.Syntax.Activities.IntermediateActivities.ActivityEdge#getActivity
	 * @model opposite="activity" containment="true" ordered="false"
	 * @generated
	 */
	EList<ActivityEdge> getEdge();

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * <!-- begin-model-doc -->
	 * <HTML><HEAD>
	 *  <META content="MSHTML
	 *                   6.00.6000.16674" name=GENERATOR></HEAD>
	 *                   <BODY>An activity may be active, but cannot have a classifier
	 *                   behavior.</BODY></HTML>
	 * self.classifierBehavior->isEmpty()
	 * @param diagnostics The chain of diagnostics to which problems are to be appended.
	 * @param context The cache of context-specific information.
	 * <!-- end-model-doc -->
	 * @model
	 * @generated
	 */
	boolean fUML_no_classifier_behavior(DiagnosticChain diagnostics, Map<Object, Object> context);

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @model isReadOnlyRequired="true" isReadOnlyOrdered="false"
	 * @generated
	 */
	void fUML_setIsReadOnly(boolean isReadOnly);

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @model nodeRequired="true" nodeOrdered="false"
	 * @generated
	 */
	void addNode(ActivityNode node);

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @model edgeRequired="true" edgeOrdered="false"
	 * @generated
	 */
	void addEdge(ActivityEdge edge);

} // Activity
